package com.shilei.spring.aop.aop;

import com.shilei.spring.aop.able.Doable;

import java.lang.reflect.Method;

/**
 * @author 石雷
 * shilei1@jiayuan.com
 * 2021/8/31/031 16:06
 */
public interface Aop {

    /**
     * 切面类必须实现此方法 指定 在方法前切入代码
     */
    void before(Class clazz, Method method,Object[] params);

    /**
     * 切面类必须实现此方法 环绕切入代码
     */
    Object around(Doable doable, Class clazz, Method method,Object[] params);
    /**
     * 切面类必须实现此方法 指定 在方法后切入代码
     */
    void after(Class clazz, Method method,Object[] params);

    /**
     * 切面类必须实现此方法 当被切方法抛出异常的处理
     */

    void error(Throwable throwable);
}
